package com.jian.java.config;

import com.jian.java.bean.Person;
import com.jian.java.bean.User;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;

import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Jiange
 * @create 2021-04-26-16:53
 */

/**
 * 配置类本身也是组件
 * proxyBeanMethods 为true 获取到的就是代理对象的方法会检查该组件是否在容器内创建  false不检查 不是一个对象
 * 得到的配置对象也不再是代理对象
 */
@Configuration(proxyBeanMethods = true)//配置类本身也是组件
@EnableConfigurationProperties(Person.class)//开启属性绑定功能  Person自动会注入到容器内
public class MyConfig {
    @Bean//给IOC容器添加组件  以方法名作为id 返回类型就是组件类型  返回的值就是在容器的实例  默认是单例
    public User user(){
        return new User("李子建",18);
    }

    @Bean
    public StringHttpMessageConverter stringHttpMessageConverter(){
        StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
        ArrayList<MediaType> objects = new ArrayList<MediaType>();
        objects.add(new MediaType("text","plain", Charset.forName("UTF-8")));
        objects.add(new MediaType("application","json", Charset.forName("UTF-8")));
        stringHttpMessageConverter.setSupportedMediaTypes(objects);
        return stringHttpMessageConverter;
    }
}
